var displayRoleName = ['系统管理员', '客户管理员'];
var valueRoleName = [true, false];
var displayStatusName = ['正常', '冻结'];
var accountGrid;
var modifyWin = modifyAccountWin();
var rolecheckboxitems = [];
Ext.Ajax.request({
			url : 'RoleCheckBox!getRoleCheckBox.action',
			success : function(result, request) {
				var res = Ext.util.JSON.decode(result.responseText);
				alert(res.result.result.length);
				for (var i = 0; i < res.result.result.length; i++) {
					var role = res.result.result[i];
					var chk = {
						boxLabel : role.description,
						name : role.name,
						inputValue : role.id
					};
					rolecheckboxitems.push(chk);
				}
			},
			failure : Ext.Ajax.failure
		});
Ext.onReady(function() {
	Ext.lib.Ajax.defaultPostHeader += '; charset=utf-8';
	Ext.QuickTips.init();
	// 新增系统管理员窗口
	// var win = addSystemAdminRoleWin();

	// var sm = new Ext.grid.CheckboxSelectionModel();
	var store = new Ext.data.Store({
				url : '#',// 'CusAdmin!queryAdminSystem.action',
				reader : new Ext.data.JsonReader({
							root : 'result.result',
							id : 'user_id',
							totalProperty : 'result.totalCount'
						}, [{
									name : 'user_id',
									mapping : 'user_id'
								}, {
									name : 'user_name',
									mapping : 'user_name'
								}, {
									name : 'company_code',
									mapping : 'company_code'
								}, {
									name : 'display_name',
									mapping : 'display_name'
								}, {
									name : 'create_date',
									mapping : 'create_date'
								}, {
									name : 'disabled',
									mapping : 'disabled'
								}])
			});
	var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
		header : '账户名',
		dataIndex : 'user_name',
		width : 150,
		renderer : function(value, p, record) {
			return "<a href=# onclick=\"modifyAccount('" + record.data.user_id
					+ "','" + value + "','" + record.data.display_name
					+ "')\">" + value + "</a>";
		}
	}, {
		header : '显示名',
		dataIndex : 'display_name',
		width : 150
	}, {
		header : '注册时间',
		dataIndex : 'create_date',
		width : 150,
		renderer : function(value, p, record) {
			return Ext.util.Format.date(
					getDate111(value, 'yyyy-MM-ddTHH:mm:ss'), 'Y-m-d i:m:s');
		}
	}, {
		header : '状态',
		dataIndex : 'disabled',
		width : 100,
		renderer : function(value, p, record) {
			if (value == 0)
				return displayStatusName[0];
			else
				return displayStatusName[1]
		}
	}]);

	var searchPanel = new Ext.form.FormPanel({
				frame : true,
				width : 1020,
				buttonAlign : 'right',
				id : 'searchPanelForm',
				bodyStyle : 'padding:5px 5px 0',
				url : '',
				layout : 'column',
				items : [{
							columnWidth : .5,
							layout : 'form',
							items : [{
										xtype : 'textfield',
										fieldLabel : '账号名',
										id : 'user_code',
										width : 300
									}]
						}, {
							columnWidth : .5,
							layout : 'form',
							items : [new Ext.form.ComboBox({
										fieldLabel : '角色',
										id : 'role',
										store : new Ext.data.SimpleStore({
													fields : ['key', 'value'],
													data : [
															[
																	displayRoleName[0],
																	valueRoleName[0]],
															[
																	displayRoleName[1],
																	valueRoleName[1]]]
												}),
										displayField : 'key',
										valueField : 'value',
										mode : 'local', // 本地数据
										triggerAction : 'all', // 点击下拉显示所有数据
										emptyText : '请选择...',
										readOnly : true,
										selectOnFocus : true
									})]
						}],
				buttons : [{
					text : '查询',
					id : '_btnSearch',
					handler : function() {
						store.on('beforeload', function() {
									store.baseParams = {
										user_code : searchPanel
												.findById('user_code')
												.getValue(),
										role : searchPanel.findById('role')
												.getValue()
									}
								});
						store.reload();
					}
				}]
			});
	searchPanel.render(Ext.getBody());
	var addAction = new Ext.Action({
				text : '新增账户',
				// iconCls:'all',
				handler : function() {
					win.show();
				}
			});

	var modifyAction = new Ext.Action({
				text : '重置密码',
				// iconCls:'all',
				handler : function() {
					Ext.Msg.alert('警告', '抱歉，目前尚不支持此功能，请期待下一个版本！');
				}
			});

	accountGrid = new Ext.grid.GridPanel({
				height : 210,
				width : 1020,
				id : 'accountGrid',
				tbar : [addAction, modifyAction],
				bbar : new Ext.PagingToolbar({
							pageSize : pageSize,
							store : store,
							displayInfo : true,
							dispalyMsg : '显示第{0}条到{1}条记录，一共{2}条',
							emptyMsg : '没有记录'
						}),
				// sm:sm,
				cm : cm,
				store : store,
				loadMask : true,
				loadMask : {
					msg : '正在加载数据...'
				},
				autoExpandColumn : 3
			});
	store.reload();
	accountGrid.render(Ext.getBody());
});

function modifyAccountWin() {
	var modifyAccountPanel = new Ext.form.FormPanel({
				frame : true,
				id : 'modifyAccountPanelForm',
				bodyStyle : 'padding:5px 5px 0',
				url : 'CusAdmin!modifyAccountByAdmin.action',
				items : [new Ext.form.Hidden({
									id : '_user_id_modify'
								}), {
							xtype : 'textfield',
							fieldLabel : '账户名',
							name : '_user_code_modify',
							id : '_user_code_modify',
							anchor : '95%',
							readOnly : true,
							disabled : true,
							allowBlank : false,
							emptyText : '请输入显示用户名',
							blankText : '显示用户名不能为空'
						}, {
							xtype : 'textfield',
							fieldLabel : '显示用户名',
							name : '_user_name_modify',
							id : '_user_name_modify',
							anchor : '95%',
							allowBlank : false,
							emptyText : '请输入显示用户名',
							blankText : '显示用户名不能为空'
						}]
			});
	var win = new Ext.Window({
				buttonalign : 'right',
				closable : true,
				draggable : true,
				region : 'center',
				plain : true,
				items : [modifyAccountPanel],
				title : '修改用户信息',
				width : 750,
				buttons : [{
					text : '修改',
					id : '_btnModify',
					handler : function() {
						if (!modifyAccountPanel.findById('_user_name_modify')
								.validate()) {
							return;
						}
						modifyAccountPanel.getForm().submit({
									success : function(form, action) {
										accountGrid.getStore().reload();
										win.hide();
									},
									failure : function(form, action) {
										Ext.Msg.alert('警告', '由于异常原因,操作无法完成!');
									}
								});
					}
				}, {
					text : '取消',
					id : '_btnCancel2',
					handler : function() {
						win.hide();
					}
				}],
				listeners : {
					"beforedestroy" : function(obj) {
						return false;
					},
					"beforeshow" : function(obj) {
						return true;
					},
					"beforehide" : function(obj) {
						modifyAccountPanel.getForm().reset();
						return true;
					}
				}
			});
	return win
}

function modifyAccount(i, v, d) {
	var panel = modifyWin.findById('modifyAccountPanelForm');
	panel.findById('_user_id_modify').setValue(i);
	panel.findById('_user_code_modify').setValue(v);
	if (d != 'null') {
		panel.findById('_user_name_modify').setValue(d);
	}
	modifyWin.show();
}

var addSystemAdminRolePanel = new Ext.form.FormPanel({
	frame : true,
	id : 'addPanelForm',
	bodyStyle : 'padding:5px 5px 0',
	url : 'CusAdmin!addSystemAdmin.action',
	items : [{
		layout : 'column',
		items : [{
					columnWidth : 1,
					layout : 'form',
					items : [{
								xtype : 'hidden',
								name : '_company_code',
								id : '_company_code'
							}]
				}, {
					columnWidth : .7,
					layout : 'form',
					items : [{
								xtype : 'textfield',
								fieldLabel : '账号名',
								name : '_user_code',
								id : '_user_code',
								anchor : '95%',
								allowBlank : false,
								blankText : '账户名不能为空',
								emptyText : '请输入账户名'
							}]
				}, {
					columnWidth : .3,
					layout : 'form',
					items : [new Ext.Button({
						text : '校验密码是否可用',
						handler : function() {
							if (!addSystemAdminRolePanel.findById('_user_code')
									.validate()) {
								Ext.Msg.show({
											title : '警告',
											msg : '请输入合法的账户名!',
											buttons : Ext.Msg.OK,
											icon : Ext.MessageBox.WARNING
										});
								addSystemAdminRolePanel.findById('_user_code')
										.focus();
								return;
							}
							Ext.Ajax.request({
										url : 'CusAdmin!validateAccount.action',
										method : 'post',
										params : {
											_user_code : addSystemAdminRolePanel
													.findById('_user_code')
													.getValue()
										},
										success : function(result, response) {
											var responseTextVale = Ext.util.JSON
													.decode(result.responseText);
											if (responseTextVale.msg == 'true') {
												Ext.Msg.alert('提示',
														'恭喜您!此账号未被注册');
											} else {
												Ext.Msg.alert('提示',
														'抱歉!此账号已经被注册');
											}
										}
									});
						}
					})]
				}, {
					columnWidth : 1,
					layout : 'form',
					items : [{
								xtype : 'textfield',
								fieldLabel : '显示用户名',
								name : '_user_name',
								id : '_user_name',
								anchor : '95%',
								allowBlank : false,
								emptyText : '请输入显示用户名',
								blankText : '显示用户名不能为空'
							}, {
								xtype : 'textfield',
								fieldLabel : '密码',
								inputType : "password",
								name : '_user_pwd',
								id : '_user_pwd',
								anchor : '95%',
								allowBlank : false,
								blankText : '密码不能为空'
							}, {
								xtype : 'textfield',
								fieldLabel : '确认密码',
								inputType : "password",
								name : '_user_pwd_confirm',
								id : '_user_pwd_confirm',
								anchor : '95%',
								allowBlank : false,
								blankText : '请再次输入密码'
							}, {
								id : 'myGroup',
								xtype : 'checkboxgroup',
								fieldLabel : '角色',
								itemCls : 'x-check-group-alt',
								columns : 2,
								items : rolecheckboxitems
							}]
				}]
	}]
});
var win = new Ext.Window({
	buttonalign : 'right',
	closable : true,
	draggable : true,
	// height : 200,
	// layout : 'border',
	region : 'center',
	plain : true,
	items : [addSystemAdminRolePanel],
	title : '新增系统管理员账户',
	width : 750,
	buttons : [{
		text : '保存',
		id : '_btnSave',
		handler : function() {
			if (!addSystemAdminRolePanel.getForm().isValid()) {
				return;
			}

			if (addSystemAdminRolePanel.findById('_user_pwd').getValue() != addSystemAdminRolePanel
					.findById('_user_pwd_confirm').getValue()) {
				Ext.Msg.show({
							titile : '警告',
							msg : '两次密码不相符,请再次确认密码',
							buttons : Ext.Msg.OK,
							icon : Ext.MessageBox.WARNING
						});
				addSystemAdminRolePanel.findById('_user_pwd_confirm').focus();
				return;
			}
			addSystemAdminRolePanel.getForm().submit({
				success : function(form, action) {
					var responseTextVale = Ext.util.JSON
							.decode(action.response.responseText);
					// 账户已经存在,添加失败
					if (responseTextVale.msg == 'AccountHasExistedException') {
						// Ext.Msg.alert('警告','账户名已存在,无法成功添加该账户!');
						Ext.Msg.show({
									title : '警告',
									msg : '账户名已存在,无法成功添加该账户!',
									buttons : Ext.Msg.OK,
									icon : Ext.MessageBox.WARNING
								});
					}
					if (responseTextVale.msg == ''
							|| responseTextVale.msg == null) {
						accountGrid.getStore().reload();
						win.hide();
					}
				},
				failure : function(form, action) {
					Ext.Msg.alert('警告', '由于异常原因,操作无法完成!');
				}
			});
		}
	}, {
		text : '取消',
		id : '_btnCancel',
		handler : function() {
		alert(getcheckboxValue(addSystemAdminRolePanel));
			//win.hide();
		}
	}],
	listeners : {
		"beforedestroy" : function(obj) {
			return false;
		},
		"beforeshow" : function(obj) {
			return true;
		},
		"beforehide" : function(obj) {
			addSystemAdminRolePanel.getForm().reset();
			return true;
		}
	}
});
// 例如getcheckboxValue(addSystemAdminRolePanel);
// getcheckboxValue(fp) 参数fp:一个formPanel
// 调用此函数,如果checkboxgroup有被选中则返回包含被ID的json字符串,否则返回一个空json格式的字符串
function getcheckboxValue(fp) {
	var obj = fp.findByType("checkboxgroup");
	var checkboxgroupstr = "{\"cbgrop\":[";
	var isnull = true;
	obj[0].items.each(function(c) {
				if (c.getValue()) {
					checkboxgroupstr += "{\"id\":\" " + c.inputValue + "\"},";
					isnull = false;
				}
			});
	var resultstr = checkboxgroupstr.substring(0, checkboxgroupstr.length - 1)
			+ "]}";
	if (!isnull) {
		return resultstr;
	} else {
		return "{\"cbgrop\":[]}"
	}
}